import {
    autorun,
    computed,
    observable
} from 'mobx'

class Store {
    @observable array = [];
    @observable obj = {};
    @observable map = new Map();
    // 会自动识别，不用手动区分可观察还是间接观察
    @observable string = 'hello';
    @observable number = 20;
    @observable bool = false;

    @computed get mixed() {
        return store.string + '/' + store.number + '/'
    }
}

const store = new Store();

// autorun
// autorun自动运行传到autorun的函数
autorun(() => {
    console.log(store.string + '/' + store.number + '/');
    // 自动会执行里面的内容
    // 
    // console.log(store.mixed);
    // 和上面效果一致
    // 证明 computed 值可以作为一个可观察值看待的
})
// 修改 autorun 中的任意可观察数据可以自动运行autorun中的内容
// 总共打印三次：hello/20/ world/20/ world/30/
store.string = 'world'
// string发生了变化：world/20/
store.number = 30
// number发生了变化：world/30/